docs: re-derive the drifted claims in ARCHITECTURE, README, CONTRIBUTING and TESTING - #2113
Merged
Merged
Conversation
…ING and TESTING Ten statements described code that has since changed. Each replacement was measured in this branch rather than carried over: ARCHITECTURE - the four Network tabs are lazy, not eager (the guard allows exactly three, and the paragraph now points at it instead of restating a hand-kept list); 55 lazy tab VMs, not ~50; the console list had Uninstaller, which binds none, and was missing System Fixes, which does; fourteen interface registrations, not thirteen, with ICleanupPreScanService added; traceroute walks the TTL itself rather than shelling out to a tool whose name has never appeared in this codebase; the profile export carries nine catalog sections, not the two named. README - collapsed groups show written copy, not abbreviated child labels; the tray menu has three items and the page contradicted itself about them. CONTRIBUTING - 704 author headers, not 688; the formatting snippet checked one project under a sentence saying CI checks four, and now loops over all four (run and verified clean). TESTING - NSubstitute 6.2, matching the pin. NavGroup.Subtitle's XML doc still described the generated abbreviation. The v1.76.1 CHANGELOG entry named a shield for Privacy & Security and then explained sixteen lines later that the padlock is what that group uses. Corrected there and in the published release body copied from it. One README claim is deliberately untouched: the slim-progress-bar sentence is false for 11 tab view-models that never assign IsBusy, and closing that gap is a code change, not a wording change. Closes #2108 Closes #2109
laurentiu021
added a commit
that referenced
this pull request
Sep 4, 2026
NavItem forwards ViewModelBase.IsBusy to the slim progress bar under a tab's name, which is the only sign -- while the user is on another tab -- that this one is working. Five view-models kept their own running flag and never assigned IsBusy, so their bar never appeared, and they are the slowest screens in the app: Speed Test (up to a minute), Traceroute (up to thirty hops), Network Repair (three netsh resets), About (an ~85 MB download) and DNS & Hosts. One generated hook each, copying the idiom DeepCleanupViewModel already uses, so the existing flag stays the single source of truth. Scope came from a corrected measurement. Looking for On...Changed hooks reported 16 unforwarded flags, which was wrong -- several tabs assign IsBusy inline in the command body, which is equally correct. Re-measured as "assigns IsBusy anywhere" the real list was three, plus two more once the flag pattern covered Running/Loading suffixes. Guarded by EveryViewModelThatTracksRunningState_ForwardsItToIsBusy, indifferent to HOW the assignment happens so the inline tabs keep passing, with the one non-tab match (AudioSessionRowViewModel.IsUserAdjusting, a slider drag) excluded with its reason. This also makes the README's progress-bar sentence true, which #2113 left standing on purpose rather than weakening it. Co-authored-by: laurentiu021 <laurentiu021@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #2108. Closes #2109.
Every number and claim below was re-derived from current source in this branch, not carried over from the issue.
ARCHITECTURE.md
OnlyTheJustifiedTabs_AreBuiltAtStartup'sjustifiedarraygrep -c 'Tab<…ViewModel>'UninstallerView.xamlreferences the console 0 times;SystemFixesView.xamldoes and was missingICleanupPreScanServiceadded to the enumerationAdd*<I…,…>registrations inServiceRegistration.csPingandtracert"PingOptions(ttl, true)andTtlExpiredrepliestracertappears 0 times in any.cs;TracerouteServiceusesSendPingAsyncProfileService.Catalogactually lists, plus the skip-if-absent ruleCatalogentriesREADME.md
EverySidebarGroupSubtitle_IsWrittenCopyThatFitsTwoLinesnow fails that shape.MenuItemheaders inTrayIconService. The page previously contradicted itself, since its own Volume Control section describes the Volume mixer shortcut.CONTRIBUTING.md / TESTING.md
Directory.Packages.propspin of 6.2.0.Source XML doc
NavGroup.Subtitlesaid "Abbreviated child labels joined with·". It is written copy set per group at the call site; the doc now says so and names where.CHANGELOG + the v1.76.1 release body (#2109)
The v1.76.1 entry listed "a shield for Privacy & Security" and then, sixteen lines later, explained that the admin badge is the shield because the padlock is what Privacy & Security uses. Source settles it:
Group("grp-privacy", …, "", …) // Lockand<!-- Shield (EA18), not the padlock this used to draw. -->. Corrected to "a padlock" inCHANGELOG.mdand in the published release body, which was copied from it.No announcement discussion needed correcting — patch releases have not had one since #2073, and the newest announcement is for 1.76.0.
One claim left in place on purpose
README still says "Each tab shows a slim progress bar under its name when performing a long-running operation." That is false today for 11 of the 55 tab view-models, which never assign
IsBusy— including Speed Test, Traceroute, Ping and Network Repair, the four slowest tabs in the app. Weakening the sentence would document a gap instead of closing it, so the fix belongs in the code and goes in its own PR. #2108 records the list.Verification
docs:— no release, no version bump. Version consistency unchanged and re-checked (csproj 1.76.12 = newest CHANGELOG entry 1.76.12 = SECURITY 1.76.x); only the 1.76.1 entry was edited, not the newest. Build 0 errors / 0 warnings after theNavGroup.csdoc change,ArchitectureTests89 green (plus the harness-only author-header case for the throwaway runner),dotnet format --verify-no-changesclean on all four projects.